QuickSightのビジュアルタイプ「テーブル」で重複したレコードをまとめる方法を考えてみた
こんにちは、洲崎です。
QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをQuickSight上でまとめる方法を考えてみたので共有します。
重複しているレコードを1つにまとめて表示させたい
Amazon Connect→Amazon Kinesis Data Firehose→S3でAmazon ConnectのCTR(問い合わせレコードデータモデル)を出力しています。
ある理由で、Data Firehoseを再作成しようと考えており、一時的にData Firehoseを二重化することにしたのですが、CTRデータが重複してしまうことが懸念として残りました。
CTRデータはContactId
が一意のデータだった為、そこを前処理等を行わずに、QuickSight上でキーとしてまとめられないか調査したのでブログにします。
結論
- QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをまとめる方法は3つある
- 「グループ化の条件」に特定の項目を入れる
- 「
distinct_count
」関数を利用する - 「グループ化の条件」に全ての項目を入れる
- 「数値」ではなく文字列等でそのままレコードを表示したい場合は3の案になる
- 「グループ化の条件」に全ての項目を入れると若干処理が重くなるので注意
やってみる
重複したレコードをまとめる前
重複したレコードが表示されている状態を作成します。
一意であるContactId
で、今回はaaaaaaaaaa
とbbbbbbbbbb
が、それぞれ2つ重複している形を想定します。
これをそれぞれまとめて合計が2件として表示させます。
1. 「グループ化の条件」に特定の項目を入れる
シンプルに「値」ではなく、特定の項目を「グループ化の条件」に入れる場合です。
今回はContactId
が一意であると想定している為、ContactId
を「グループ化の条件」に移動させます。
4件あったレコードを、ContactId
をキーとして2件にまとめることができました。
注意点として、その他の値は「カウント」(数値のみ)で表示される形になります。
条件を変えようとしても、フォーマットオプションが「カウント」のみしか表示されません。
集計で表示させる内容が「カウント」(数値のみ)であれば、有効な方法です。
2. 「distinct_count」関数を利用する
「distinct_count」関数はQuickSightの計算フィールドで利用できる関数です。
1つ以上の項目に対して、グループ化の処理を行うことができます。
構文はこちらです。
distinct_count(dimension or measure, [group-by level])
計算フィールドの作成はQuickSightのデータセットから行います。
「フィールド」から「計算フィールドを追加」をクリックします。
単純にdimension
をContactId
で指定しました。
distinct_count({ContactId})
保存できたら分析に移動します。
作成した計算フィールドを「グループ化の条件」に持っていこうとしましたが、distinct_count
の計算フィールドは「グループ化の条件」として利用できないとのことでした。
「値」に組み込むと、distinct_count
の計算フィールドは「カスタム」となり、他の項目は全て「カウント」(数値のみ)になります。
また、表示される内容は、1の案と少し違い、それぞれの項目がいくつあるかと、重複しているものがいくつあるか表示されます。
今回のケースだと「通話開始時間」、「通話終了時間」、「ContactId」の項目が合計4つあり、重複しているデータ(ContactId_distinct_count
)が2つとして表示されます。
distinct_count
関数はLAC-A関数として利用すると幅が広がりそうです。今回は利用ケースとズレる為割愛しますが、詳細については下記記事をご参照ください。
3. 「グループ化の条件」に全ての項目を入れる
最後のケースで、全ての項目を「値」から「グループ化の条件」に移動させてみました。
すると、各レコードの重複がグループ化され、4件あったのが2件で表示することができました。
日付が2023年4月4日
までの表示になっていますが、項目の「集計」から細かい日付で表示させることが可能です。
「分」を選択すると、今回行いたい重複したレコードをまとめる形で表示することができました。
最後の案の注意点として、「値」ではなく「グループ化の条件」にいれると、全ての項目に対してGroup by関数が実行される為、パフォーマンスが低下します。
実際に試してみて、処理時間に対して抵抗がある場合は「値」に入れつつ、運用上難しいなどあれば前処理で重複データをマージする形を検討しましょう。
最後に
QuickSightのビジュアルタイプである「テーブル」で、重複したレコードをQuickSight上でまとめる方法を整理してみました。
重複したデータがあって見づらい等あれば、参考にしてみてください。
ではまた!コンサルティング部の洲崎でした。